package com.szrt.ssm.java.io.example01.demo03;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;


/**
 * 在FileInputStreamDemo02的基础上做了循环的优化 1次读取5个字符 这样7个字母只需要循环2次就可以了
 */
public class FileInputStreamDemo03 {
	
	public static void main(String[] args) {
		FileInputStream fis = null;
		try {
			File file = new File("io/hello.txt");
			fis = new FileInputStream(file);
			
			//一次性搬5桶水
			byte[] b = new byte[5];
			//fis读文件,写入到数组b中。每次写入len个。如果返回-1就说明文件读取结束  读取到的数据保存在数组b中
			int len;
			while((len=fis.read(b)) != -1){
				//循环b
				for(int i=0; i<len;i++){
					char c = (char)b[i];
					System.out.print(c);
				}
				//System.out.println();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(null != fis){
				//4 关闭相应的流 访问的是磁盘的资源 不是java虚拟机内存的资源。Java虚拟机不会自动垃圾回收
				try {
					fis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}
